// $ANTLR ${project.version} ${buildNumber}

	package OrchestrationLanguage.resource.ol.mopp;


import org.antlr.runtime3_3_0.*;
import java.util.HashMap;
@SuppressWarnings("unused")
public class OlParser extends OlANTLRParserBase {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "TEXT", "QUOTED_34_34", "QUOTED_60_62", "COMMENT", "INTEGER", "FLOAT", "WHITESPACE", "LINEBREAK", "'Variable_Assignment'", "'{'", "'assign'", "':'", "'}'", "'Variable_Declaration'", "'declare'", "'Variable'", "'name'", "'module'", "'import'", "';'", "'service'", "'@'", "'uses'", "'main'", "'('", "');'", "')'", "'='", "','", "'if'", "'else'"
    };
    public static final int EOF=-1;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__19=19;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int TEXT=4;
    public static final int QUOTED_34_34=5;
    public static final int QUOTED_60_62=6;
    public static final int COMMENT=7;
    public static final int INTEGER=8;
    public static final int FLOAT=9;
    public static final int WHITESPACE=10;
    public static final int LINEBREAK=11;

    // delegates
    // delegators


        public OlParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public OlParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
            this.state.ruleMemo = new HashMap[44+1];
             
             
        }
        

    public String[] getTokenNames() { return OlParser.tokenNames; }
    public String getGrammarFileName() { return "Ol.g"; }


    	private OrchestrationLanguage.resource.ol.IOlTokenResolverFactory tokenResolverFactory = new OrchestrationLanguage.resource.ol.mopp.OlTokenResolverFactory();
    	
    	/**
    	 * the index of the last token that was handled by collectHiddenTokens()
    	 */
    	private int lastPosition;
    	
    	/**
    	 * A flag that indicates whether the parser should remember all expected elements.
    	 * This flag is set to true when using the parse for code completion. Otherwise it
    	 * is set to false.
    	 */
    	private boolean rememberExpectedElements = false;
    	
    	private Object parseToIndexTypeObject;
    	private int lastTokenIndex = 0;
    	
    	/**
    	 * A list of expected elements the were collected while parsing the input stream.
    	 * This list is only filled if <code>rememberExpectedElements</code> is set to
    	 * true.
    	 */
    	private java.util.List<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal> expectedElements = new java.util.ArrayList<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal>();
    	
    	private int mismatchedTokenRecoveryTries = 0;
    	/**
    	 * A helper list to allow a lexer to pass errors to its parser
    	 */
    	protected java.util.List<org.antlr.runtime3_3_0.RecognitionException> lexerExceptions = java.util.Collections.synchronizedList(new java.util.ArrayList<org.antlr.runtime3_3_0.RecognitionException>());
    	
    	/**
    	 * Another helper list to allow a lexer to pass positions of errors to its parser
    	 */
    	protected java.util.List<Integer> lexerExceptionsPosition = java.util.Collections.synchronizedList(new java.util.ArrayList<Integer>());
    	
    	/**
    	 * A stack for incomplete objects. This stack is used filled when the parser is
    	 * used for code completion. Whenever the parser starts to read an object it is
    	 * pushed on the stack. Once the element was parser completely it is popped from
    	 * the stack.
    	 */
    	protected java.util.Stack<org.eclipse.emf.ecore.EObject> incompleteObjects = new java.util.Stack<org.eclipse.emf.ecore.EObject>();
    	
    	private int stopIncludingHiddenTokens;
    	private int stopExcludingHiddenTokens;
    	private int tokenIndexOfLastCompleteElement;
    	
    	private int expectedElementsIndexOfLastCompleteElement;
    	
    	/**
    	 * The offset indicating the cursor position when the parser is used for code
    	 * completion by calling parseToExpectedElements().
    	 */
    	private int cursorOffset;
    	
    	/**
    	 * The offset of the first hidden token of the last expected element. This offset
    	 * is used to discard expected elements, which are not needed for code completion.
    	 */
    	private int lastStartIncludingHidden;
    	
    	protected void addErrorToResource(final String errorMessage, final int column, final int line, final int startIndex, final int stopIndex) {
    		postParseCommands.add(new OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>() {
    			public boolean execute(OrchestrationLanguage.resource.ol.IOlTextResource resource) {
    				if (resource == null) {
    					// the resource can be null if the parser is used for code completion
    					return true;
    				}
    				resource.addProblem(new OrchestrationLanguage.resource.ol.IOlProblem() {
    					public OrchestrationLanguage.resource.ol.OlEProblemSeverity getSeverity() {
    						return OrchestrationLanguage.resource.ol.OlEProblemSeverity.ERROR;
    					}
    					public OrchestrationLanguage.resource.ol.OlEProblemType getType() {
    						return OrchestrationLanguage.resource.ol.OlEProblemType.SYNTAX_ERROR;
    					}
    					public String getMessage() {
    						return errorMessage;
    					}
    					public java.util.Collection<OrchestrationLanguage.resource.ol.IOlQuickFix> getQuickFixes() {
    						return null;
    					}
    				}, column, line, startIndex, stopIndex);
    				return true;
    			}
    		});
    	}
    	
    	public void addExpectedElement(OrchestrationLanguage.resource.ol.IOlExpectedElement terminal, int followSetID, org.eclipse.emf.ecore.EStructuralFeature... containmentTrace) {
    		if (!this.rememberExpectedElements) {
    			return;
    		}
    		OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal expectedElement = new OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal(terminal, followSetID, containmentTrace);
    		setPosition(expectedElement, input.index());
    		int startIncludingHiddenTokens = expectedElement.getStartIncludingHiddenTokens();
    		if (lastStartIncludingHidden >= 0 && lastStartIncludingHidden < startIncludingHiddenTokens && cursorOffset > startIncludingHiddenTokens) {
    			// clear list of expected elements
    			this.expectedElements.clear();
    		}
    		lastStartIncludingHidden = startIncludingHiddenTokens;
    		this.expectedElements.add(expectedElement);
    	}
    	
    	protected void collectHiddenTokens(org.eclipse.emf.ecore.EObject element) {
    	}
    	
    	protected void copyLocalizationInfos(final org.eclipse.emf.ecore.EObject source, final org.eclipse.emf.ecore.EObject target) {
    		postParseCommands.add(new OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>() {
    			public boolean execute(OrchestrationLanguage.resource.ol.IOlTextResource resource) {
    				OrchestrationLanguage.resource.ol.IOlLocationMap locationMap = resource.getLocationMap();
    				if (locationMap == null) {
    					// the locationMap can be null if the parser is used for code completion
    					return true;
    				}
    				locationMap.setCharStart(target, locationMap.getCharStart(source));
    				locationMap.setCharEnd(target, locationMap.getCharEnd(source));
    				locationMap.setColumn(target, locationMap.getColumn(source));
    				locationMap.setLine(target, locationMap.getLine(source));
    				return true;
    			}
    		});
    	}
    	
    	protected void copyLocalizationInfos(final org.antlr.runtime3_3_0.CommonToken source, final org.eclipse.emf.ecore.EObject target) {
    		postParseCommands.add(new OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>() {
    			public boolean execute(OrchestrationLanguage.resource.ol.IOlTextResource resource) {
    				OrchestrationLanguage.resource.ol.IOlLocationMap locationMap = resource.getLocationMap();
    				if (locationMap == null) {
    					// the locationMap can be null if the parser is used for code completion
    					return true;
    				}
    				if (source == null) {
    					return true;
    				}
    				locationMap.setCharStart(target, source.getStartIndex());
    				locationMap.setCharEnd(target, source.getStopIndex());
    				locationMap.setColumn(target, source.getCharPositionInLine());
    				locationMap.setLine(target, source.getLine());
    				return true;
    			}
    		});
    	}
    	
    	/**
    	 * Sets the end character index and the last line for the given object in the
    	 * location map.
    	 */
    	protected void setLocalizationEnd(java.util.Collection<OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>> postParseCommands , final org.eclipse.emf.ecore.EObject object, final int endChar, final int endLine) {
    		postParseCommands.add(new OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>() {
    			public boolean execute(OrchestrationLanguage.resource.ol.IOlTextResource resource) {
    				OrchestrationLanguage.resource.ol.IOlLocationMap locationMap = resource.getLocationMap();
    				if (locationMap == null) {
    					// the locationMap can be null if the parser is used for code completion
    					return true;
    				}
    				locationMap.setCharEnd(object, endChar);
    				locationMap.setLine(object, endLine);
    				return true;
    			}
    		});
    	}
    	
    	public OrchestrationLanguage.resource.ol.IOlTextParser createInstance(java.io.InputStream actualInputStream, String encoding) {
    		try {
    			if (encoding == null) {
    				return new OlParser(new org.antlr.runtime3_3_0.CommonTokenStream(new OlLexer(new org.antlr.runtime3_3_0.ANTLRInputStream(actualInputStream))));
    			} else {
    				return new OlParser(new org.antlr.runtime3_3_0.CommonTokenStream(new OlLexer(new org.antlr.runtime3_3_0.ANTLRInputStream(actualInputStream, encoding))));
    			}
    		} catch (java.io.IOException e) {
    			OrchestrationLanguage.resource.ol.mopp.OlPlugin.logError("Error while creating parser.", e);
    			return null;
    		}
    	}
    	
    	/**
    	 * This default constructor is only used to call createInstance() on it.
    	 */
    	public OlParser() {
    		super(null);
    	}
    	
    	protected org.eclipse.emf.ecore.EObject doParse() throws org.antlr.runtime3_3_0.RecognitionException {
    		this.lastPosition = 0;
    		// required because the lexer class can not be subclassed
    		((OlLexer) getTokenStream().getTokenSource()).lexerExceptions = lexerExceptions;
    		((OlLexer) getTokenStream().getTokenSource()).lexerExceptionsPosition = lexerExceptionsPosition;
    		Object typeObject = getTypeObject();
    		if (typeObject == null) {
    			return start();
    		} else if (typeObject instanceof org.eclipse.emf.ecore.EClass) {
    			org.eclipse.emf.ecore.EClass type = (org.eclipse.emf.ecore.EClass) typeObject;
    			if (type.getInstanceClass() == OrchestrationLanguage.Variable_Assignment.class) {
    				return parse_OrchestrationLanguage_Variable_005fAssignment();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Variable_Declaration.class) {
    				return parse_OrchestrationLanguage_Variable_005fDeclaration();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Variable.class) {
    				return parse_OrchestrationLanguage_Variable();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Modules.class) {
    				return parse_OrchestrationLanguage_Modules();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Module.class) {
    				return parse_OrchestrationLanguage_Module();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Import.class) {
    				return parse_OrchestrationLanguage_Import();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.ExternalServices.class) {
    				return parse_OrchestrationLanguage_ExternalServices();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.InternalServices.class) {
    				return parse_OrchestrationLanguage_InternalServices();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Main.class) {
    				return parse_OrchestrationLanguage_Main();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Process.class) {
    				return parse_OrchestrationLanguage_Process();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.InternalProcess.class) {
    				return parse_OrchestrationLanguage_InternalProcess();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Call.class) {
    				return parse_OrchestrationLanguage_Call();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Argument.class) {
    				return parse_OrchestrationLanguage_Argument();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.If.class) {
    				return parse_OrchestrationLanguage_If();
    			}
    			if (type.getInstanceClass() == OrchestrationLanguage.Else.class) {
    				return parse_OrchestrationLanguage_Else();
    			}
    		}
    		throw new OrchestrationLanguage.resource.ol.mopp.OlUnexpectedContentTypeException(typeObject);
    	}
    	
    	public int getMismatchedTokenRecoveryTries() {
    		return mismatchedTokenRecoveryTries;
    	}
    	
    	public Object getMissingSymbol(org.antlr.runtime3_3_0.IntStream arg0, org.antlr.runtime3_3_0.RecognitionException arg1, int arg2, org.antlr.runtime3_3_0.BitSet arg3) {
    		mismatchedTokenRecoveryTries++;
    		return super.getMissingSymbol(arg0, arg1, arg2, arg3);
    	}
    	
    	public Object getParseToIndexTypeObject() {
    		return parseToIndexTypeObject;
    	}
    	
    	protected Object getTypeObject() {
    		Object typeObject = getParseToIndexTypeObject();
    		if (typeObject != null) {
    			return typeObject;
    		}
    		java.util.Map<?,?> options = getOptions();
    		if (options != null) {
    			typeObject = options.get(OrchestrationLanguage.resource.ol.IOlOptions.RESOURCE_CONTENT_TYPE);
    		}
    		return typeObject;
    	}
    	
    	/**
    	 * Implementation that calls {@link #doParse()} and handles the thrown
    	 * RecognitionExceptions.
    	 */
    	public OrchestrationLanguage.resource.ol.IOlParseResult parse() {
    		terminateParsing = false;
    		postParseCommands = new java.util.ArrayList<OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource>>();
    		OrchestrationLanguage.resource.ol.mopp.OlParseResult parseResult = new OrchestrationLanguage.resource.ol.mopp.OlParseResult();
    		try {
    			org.eclipse.emf.ecore.EObject result =  doParse();
    			if (lexerExceptions.isEmpty()) {
    				parseResult.setRoot(result);
    			}
    		} catch (org.antlr.runtime3_3_0.RecognitionException re) {
    			reportError(re);
    		} catch (java.lang.IllegalArgumentException iae) {
    			if ("The 'no null' constraint is violated".equals(iae.getMessage())) {
    				// can be caused if a null is set on EMF models where not allowed. this will just
    				// happen if other errors occurred before
    			} else {
    				iae.printStackTrace();
    			}
    		}
    		for (org.antlr.runtime3_3_0.RecognitionException re : lexerExceptions) {
    			reportLexicalError(re);
    		}
    		parseResult.getPostParseCommands().addAll(postParseCommands);
    		return parseResult;
    	}
    	
    	public java.util.List<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal> parseToExpectedElements(org.eclipse.emf.ecore.EClass type, OrchestrationLanguage.resource.ol.IOlTextResource dummyResource, int cursorOffset) {
    		this.rememberExpectedElements = true;
    		this.parseToIndexTypeObject = type;
    		this.cursorOffset = cursorOffset;
    		this.lastStartIncludingHidden = -1;
    		final org.antlr.runtime3_3_0.CommonTokenStream tokenStream = (org.antlr.runtime3_3_0.CommonTokenStream) getTokenStream();
    		OrchestrationLanguage.resource.ol.IOlParseResult result = parse();
    		for (org.eclipse.emf.ecore.EObject incompleteObject : incompleteObjects) {
    			org.antlr.runtime3_3_0.Lexer lexer = (org.antlr.runtime3_3_0.Lexer) tokenStream.getTokenSource();
    			int endChar = lexer.getCharIndex();
    			int endLine = lexer.getLine();
    			setLocalizationEnd(result.getPostParseCommands(), incompleteObject, endChar, endLine);
    		}
    		if (result != null) {
    			org.eclipse.emf.ecore.EObject root = result.getRoot();
    			if (root != null) {
    				dummyResource.getContentsInternal().add(root);
    			}
    			for (OrchestrationLanguage.resource.ol.IOlCommand<OrchestrationLanguage.resource.ol.IOlTextResource> command : result.getPostParseCommands()) {
    				command.execute(dummyResource);
    			}
    		}
    		// remove all expected elements that were added after the last complete element
    		expectedElements = expectedElements.subList(0, expectedElementsIndexOfLastCompleteElement + 1);
    		int lastFollowSetID = expectedElements.get(expectedElementsIndexOfLastCompleteElement).getFollowSetID();
    		java.util.Set<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal> currentFollowSet = new java.util.LinkedHashSet<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal>();
    		java.util.List<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal> newFollowSet = new java.util.ArrayList<OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal>();
    		for (int i = expectedElementsIndexOfLastCompleteElement; i >= 0; i--) {
    			OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal expectedElementI = expectedElements.get(i);
    			if (expectedElementI.getFollowSetID() == lastFollowSetID) {
    				currentFollowSet.add(expectedElementI);
    			} else {
    				break;
    			}
    		}
    		int followSetID = 83;
    		int i;
    		for (i = tokenIndexOfLastCompleteElement; i < tokenStream.size(); i++) {
    			org.antlr.runtime3_3_0.CommonToken nextToken = (org.antlr.runtime3_3_0.CommonToken) tokenStream.get(i);
    			if (nextToken.getType() < 0) {
    				break;
    			}
    			if (nextToken.getChannel() == 99) {
    				// hidden tokens do not reduce the follow set
    			} else {
    				// now that we have found the next visible token the position for that expected
    				// terminals can be set
    				for (OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal nextFollow : newFollowSet) {
    					lastTokenIndex = 0;
    					setPosition(nextFollow, i);
    				}
    				newFollowSet.clear();
    				// normal tokens do reduce the follow set - only elements that match the token are
    				// kept
    				for (OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal nextFollow : currentFollowSet) {
    					if (nextFollow.getTerminal().getTokenNames().contains(getTokenNames()[nextToken.getType()])) {
    						// keep this one - it matches
    						java.util.Collection<OrchestrationLanguage.resource.ol.util.OlPair<OrchestrationLanguage.resource.ol.IOlExpectedElement, org.eclipse.emf.ecore.EStructuralFeature[]>> newFollowers = nextFollow.getTerminal().getFollowers();
    						for (OrchestrationLanguage.resource.ol.util.OlPair<OrchestrationLanguage.resource.ol.IOlExpectedElement, org.eclipse.emf.ecore.EStructuralFeature[]> newFollowerPair : newFollowers) {
    							OrchestrationLanguage.resource.ol.IOlExpectedElement newFollower = newFollowerPair.getLeft();
    							OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal newFollowTerminal = new OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal(newFollower, followSetID, newFollowerPair.getRight());
    							newFollowSet.add(newFollowTerminal);
    							expectedElements.add(newFollowTerminal);
    						}
    					}
    				}
    				currentFollowSet.clear();
    				currentFollowSet.addAll(newFollowSet);
    			}
    			followSetID++;
    		}
    		// after the last token in the stream we must set the position for the elements
    		// that were added during the last iteration of the loop
    		for (OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal nextFollow : newFollowSet) {
    			lastTokenIndex = 0;
    			setPosition(nextFollow, i);
    		}
    		return this.expectedElements;
    	}
    	
    	public void setPosition(OrchestrationLanguage.resource.ol.mopp.OlExpectedTerminal expectedElement, int tokenIndex) {
    		int currentIndex = Math.max(0, tokenIndex);
    		for (int index = lastTokenIndex; index < currentIndex; index++) {
    			if (index >= input.size()) {
    				break;
    			}
    			org.antlr.runtime3_3_0.CommonToken tokenAtIndex = (org.antlr.runtime3_3_0.CommonToken) input.get(index);
    			stopIncludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
    			if (tokenAtIndex.getChannel() != 99) {
    				stopExcludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
    			}
    		}
    		lastTokenIndex = Math.max(0, currentIndex);
    		expectedElement.setPosition(stopExcludingHiddenTokens, stopIncludingHiddenTokens);
    	}
    	
    	public Object recoverFromMismatchedToken(org.antlr.runtime3_3_0.IntStream input, int ttype, org.antlr.runtime3_3_0.BitSet follow) throws org.antlr.runtime3_3_0.RecognitionException {
    		if (!rememberExpectedElements) {
    			return super.recoverFromMismatchedToken(input, ttype, follow);
    		} else {
    			return null;
    		}
    	}
    	
    	/**
    	 * Translates errors thrown by the parser into human readable messages.
    	 */
    	public void reportError(final org.antlr.runtime3_3_0.RecognitionException e)  {
    		String message = e.getMessage();
    		if (e instanceof org.antlr.runtime3_3_0.MismatchedTokenException) {
    			org.antlr.runtime3_3_0.MismatchedTokenException mte = (org.antlr.runtime3_3_0.MismatchedTokenException) e;
    			String expectedTokenName = formatTokenName(mte.expecting);
    			String actualTokenName = formatTokenName(e.token.getType());
    			message = "Syntax error on token \"" + e.token.getText() + " (" + actualTokenName + ")\", \"" + expectedTokenName + "\" expected";
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedTreeNodeException) {
    			org.antlr.runtime3_3_0.MismatchedTreeNodeException mtne = (org.antlr.runtime3_3_0.MismatchedTreeNodeException) e;
    			String expectedTokenName = formatTokenName(mtne.expecting);
    			message = "mismatched tree node: " + "xxx" + "; tokenName " + expectedTokenName;
    		} else if (e instanceof org.antlr.runtime3_3_0.NoViableAltException) {
    			message = "Syntax error on token \"" + e.token.getText() + "\", check following tokens";
    		} else if (e instanceof org.antlr.runtime3_3_0.EarlyExitException) {
    			message = "Syntax error on token \"" + e.token.getText() + "\", delete this token";
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedSetException) {
    			org.antlr.runtime3_3_0.MismatchedSetException mse = (org.antlr.runtime3_3_0.MismatchedSetException) e;
    			message = "mismatched token: " + e.token + "; expecting set " + mse.expecting;
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedNotSetException) {
    			org.antlr.runtime3_3_0.MismatchedNotSetException mse = (org.antlr.runtime3_3_0.MismatchedNotSetException) e;
    			message = "mismatched token: " +  e.token + "; expecting set " + mse.expecting;
    		} else if (e instanceof org.antlr.runtime3_3_0.FailedPredicateException) {
    			org.antlr.runtime3_3_0.FailedPredicateException fpe = (org.antlr.runtime3_3_0.FailedPredicateException) e;
    			message = "rule " + fpe.ruleName + " failed predicate: {" +  fpe.predicateText + "}?";
    		}
    		// the resource may be null if the parser is used for code completion
    		final String finalMessage = message;
    		if (e.token instanceof org.antlr.runtime3_3_0.CommonToken) {
    			final org.antlr.runtime3_3_0.CommonToken ct = (org.antlr.runtime3_3_0.CommonToken) e.token;
    			addErrorToResource(finalMessage, ct.getCharPositionInLine(), ct.getLine(), ct.getStartIndex(), ct.getStopIndex());
    		} else {
    			addErrorToResource(finalMessage, e.token.getCharPositionInLine(), e.token.getLine(), 1, 5);
    		}
    	}
    	
    	/**
    	 * Translates errors thrown by the lexer into human readable messages.
    	 */
    	public void reportLexicalError(final org.antlr.runtime3_3_0.RecognitionException e)  {
    		String message = "";
    		if (e instanceof org.antlr.runtime3_3_0.MismatchedTokenException) {
    			org.antlr.runtime3_3_0.MismatchedTokenException mte = (org.antlr.runtime3_3_0.MismatchedTokenException) e;
    			message = "Syntax error on token \"" + ((char) e.c) + "\", \"" + (char) mte.expecting + "\" expected";
    		} else if (e instanceof org.antlr.runtime3_3_0.NoViableAltException) {
    			message = "Syntax error on token \"" + ((char) e.c) + "\", delete this token";
    		} else if (e instanceof org.antlr.runtime3_3_0.EarlyExitException) {
    			org.antlr.runtime3_3_0.EarlyExitException eee = (org.antlr.runtime3_3_0.EarlyExitException) e;
    			message = "required (...)+ loop (decision=" + eee.decisionNumber + ") did not match anything; on line " + e.line + ":" + e.charPositionInLine + " char=" + ((char) e.c) + "'";
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedSetException) {
    			org.antlr.runtime3_3_0.MismatchedSetException mse = (org.antlr.runtime3_3_0.MismatchedSetException) e;
    			message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedNotSetException) {
    			org.antlr.runtime3_3_0.MismatchedNotSetException mse = (org.antlr.runtime3_3_0.MismatchedNotSetException) e;
    			message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
    		} else if (e instanceof org.antlr.runtime3_3_0.MismatchedRangeException) {
    			org.antlr.runtime3_3_0.MismatchedRangeException mre = (org.antlr.runtime3_3_0.MismatchedRangeException) e;
    			message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set '" + (char) mre.a + "'..'" + (char) mre.b + "'";
    		} else if (e instanceof org.antlr.runtime3_3_0.FailedPredicateException) {
    			org.antlr.runtime3_3_0.FailedPredicateException fpe = (org.antlr.runtime3_3_0.FailedPredicateException) e;
    			message = "rule " + fpe.ruleName + " failed predicate: {" + fpe.predicateText + "}?";
    		}
    		addErrorToResource(message, e.charPositionInLine, e.line, lexerExceptionsPosition.get(lexerExceptions.indexOf(e)), lexerExceptionsPosition.get(lexerExceptions.indexOf(e)));
    	}
    	
    	protected void completedElement(Object object, boolean isContainment) {
    		if (isContainment && !this.incompleteObjects.isEmpty()) {
    			this.incompleteObjects.pop();
    		}
    		if (object instanceof org.eclipse.emf.ecore.EObject) {
    			this.tokenIndexOfLastCompleteElement = getTokenStream().index();
    			this.expectedElementsIndexOfLastCompleteElement = expectedElements.size() - 1;
    		}
    	}
    	



    // $ANTLR start "start"
    // Ol.g:505:1: start returns [ org.eclipse.emf.ecore.EObject element = null] : (c0= parse_OrchestrationLanguage_Modules ) EOF ;
    public final org.eclipse.emf.ecore.EObject start() throws RecognitionException {
        org.eclipse.emf.ecore.EObject element =  null;
        int start_StartIndex = input.index();
        OrchestrationLanguage.Modules c0 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return element; }
            // Ol.g:506:1: ( (c0= parse_OrchestrationLanguage_Modules ) EOF )
            // Ol.g:507:2: (c0= parse_OrchestrationLanguage_Modules ) EOF
            {
            if ( state.backtracking==0 ) {

              		// follow set for start rule(s)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_0, 0, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_0);
              		expectedElementsIndexOfLastCompleteElement = 0;
              	
            }
            // Ol.g:512:2: (c0= parse_OrchestrationLanguage_Modules )
            // Ol.g:513:3: c0= parse_OrchestrationLanguage_Modules
            {
            pushFollow(FOLLOW_parse_OrchestrationLanguage_Modules_in_start82);
            c0=parse_OrchestrationLanguage_Modules();

            state._fsp--;
            if (state.failed) return element;
            if ( state.backtracking==0 ) {
               element = c0; 
            }

            }

            match(input,EOF,FOLLOW_EOF_in_start89); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		retrieveLayoutInformation(element, null, null, false);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 1, start_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "start"


    // $ANTLR start "parse_OrchestrationLanguage_Variable_005fAssignment"
    // Ol.g:521:1: parse_OrchestrationLanguage_Variable_005fAssignment returns [OrchestrationLanguage.Variable_Assignment element = null] : a0= 'Variable_Assignment' a1= '{' ( (a2= 'assign' a3= ':' (a4= TEXT ) ) )* a5= '}' ;
    public final OrchestrationLanguage.Variable_Assignment parse_OrchestrationLanguage_Variable_005fAssignment() throws RecognitionException {
        OrchestrationLanguage.Variable_Assignment element =  null;
        int parse_OrchestrationLanguage_Variable_005fAssignment_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a5=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return element; }
            // Ol.g:524:1: (a0= 'Variable_Assignment' a1= '{' ( (a2= 'assign' a3= ':' (a4= TEXT ) ) )* a5= '}' )
            // Ol.g:525:2: a0= 'Variable_Assignment' a1= '{' ( (a2= 'assign' a3= ':' (a4= TEXT ) ) )* a5= '}'
            {
            a0=(Token)match(input,12,FOLLOW_12_in_parse_OrchestrationLanguage_Variable_005fAssignment115); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_2, 1);
              	
            }
            a1=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_Variable_005fAssignment129); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_3, 2);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_4, 2);
              	
            }
            // Ol.g:554:2: ( (a2= 'assign' a3= ':' (a4= TEXT ) ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==14) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // Ol.g:555:3: (a2= 'assign' a3= ':' (a4= TEXT ) )
            	    {
            	    // Ol.g:555:3: (a2= 'assign' a3= ':' (a4= TEXT ) )
            	    // Ol.g:556:4: a2= 'assign' a3= ':' (a4= TEXT )
            	    {
            	    a2=(Token)match(input,14,FOLLOW_14_in_parse_OrchestrationLanguage_Variable_005fAssignment152); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_2_0_0_0, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_5, 3);
            	      			
            	    }
            	    a3=(Token)match(input,15,FOLLOW_15_in_parse_OrchestrationLanguage_Variable_005fAssignment172); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_2_0_0_1, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_6, 4);
            	      			
            	    }
            	    // Ol.g:584:4: (a4= TEXT )
            	    // Ol.g:585:5: a4= TEXT
            	    {
            	    a4=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Variable_005fAssignment198); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      					if (terminateParsing) {
            	      						throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      					}
            	      					if (element == null) {
            	      						element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
            	      						incompleteObjects.push(element);
            	      					}
            	      					if (a4 != null) {
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
            	      						tokenResolver.setOptions(getOptions());
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
            	      						tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_ASSIGNMENT__ASSIGN), result);
            	      						Object resolvedObject = result.getResolvedToken();
            	      						if (resolvedObject == null) {
            	      							addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStopIndex());
            	      						}
            	      						String resolved = (String) resolvedObject;
            	      						OrchestrationLanguage.Variable proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      						collectHiddenTokens(element);
            	      						registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Variable_Assignment, OrchestrationLanguage.Variable>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getVariable_AssignmentAssignReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_ASSIGNMENT__ASSIGN), resolved, proxy);
            	      						if (proxy != null) {
            	      							Object value = proxy;
            	      							element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_ASSIGNMENT__ASSIGN), value);
            	      							completedElement(value, false);
            	      						}
            	      						collectHiddenTokens(element);
            	      						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_2_0_0_2, proxy, true);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, element);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, proxy);
            	      					}
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_3, 5);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_4, 5);
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_3, 6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_4, 6);
              	
            }
            a5=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Variable_005fAssignment244); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Assignment();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_0_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a5, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 7, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 7, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 7, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 7, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 7, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 7);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 7);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 7);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 2, parse_OrchestrationLanguage_Variable_005fAssignment_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Variable_005fAssignment"


    // $ANTLR start "parse_OrchestrationLanguage_Variable_005fDeclaration"
    // Ol.g:656:1: parse_OrchestrationLanguage_Variable_005fDeclaration returns [OrchestrationLanguage.Variable_Declaration element = null] : a0= 'Variable_Declaration' a1= '{' ( (a2= 'declare' a3= ':' (a4= TEXT ) ) )* a5= '}' ;
    public final OrchestrationLanguage.Variable_Declaration parse_OrchestrationLanguage_Variable_005fDeclaration() throws RecognitionException {
        OrchestrationLanguage.Variable_Declaration element =  null;
        int parse_OrchestrationLanguage_Variable_005fDeclaration_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a5=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return element; }
            // Ol.g:659:1: (a0= 'Variable_Declaration' a1= '{' ( (a2= 'declare' a3= ':' (a4= TEXT ) ) )* a5= '}' )
            // Ol.g:660:2: a0= 'Variable_Declaration' a1= '{' ( (a2= 'declare' a3= ':' (a4= TEXT ) ) )* a5= '}'
            {
            a0=(Token)match(input,17,FOLLOW_17_in_parse_OrchestrationLanguage_Variable_005fDeclaration273); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_14, 8);
              	
            }
            a1=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_Variable_005fDeclaration287); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_15, 9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_16, 9);
              	
            }
            // Ol.g:689:2: ( (a2= 'declare' a3= ':' (a4= TEXT ) ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==18) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // Ol.g:690:3: (a2= 'declare' a3= ':' (a4= TEXT ) )
            	    {
            	    // Ol.g:690:3: (a2= 'declare' a3= ':' (a4= TEXT ) )
            	    // Ol.g:691:4: a2= 'declare' a3= ':' (a4= TEXT )
            	    {
            	    a2=(Token)match(input,18,FOLLOW_18_in_parse_OrchestrationLanguage_Variable_005fDeclaration310); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_2_0_0_0, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_17, 10);
            	      			
            	    }
            	    a3=(Token)match(input,15,FOLLOW_15_in_parse_OrchestrationLanguage_Variable_005fDeclaration330); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_2_0_0_1, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_18, 11);
            	      			
            	    }
            	    // Ol.g:719:4: (a4= TEXT )
            	    // Ol.g:720:5: a4= TEXT
            	    {
            	    a4=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Variable_005fDeclaration356); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      					if (terminateParsing) {
            	      						throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      					}
            	      					if (element == null) {
            	      						element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
            	      						incompleteObjects.push(element);
            	      					}
            	      					if (a4 != null) {
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
            	      						tokenResolver.setOptions(getOptions());
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
            	      						tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_DECLARATION__DECLARE), result);
            	      						Object resolvedObject = result.getResolvedToken();
            	      						if (resolvedObject == null) {
            	      							addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStopIndex());
            	      						}
            	      						String resolved = (String) resolvedObject;
            	      						OrchestrationLanguage.Variable proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      						collectHiddenTokens(element);
            	      						registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Variable_Declaration, OrchestrationLanguage.Variable>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getVariable_DeclarationDeclareReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_DECLARATION__DECLARE), resolved, proxy);
            	      						if (proxy != null) {
            	      							Object value = proxy;
            	      							element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE_DECLARATION__DECLARE), value);
            	      							completedElement(value, false);
            	      						}
            	      						collectHiddenTokens(element);
            	      						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_2_0_0_2, proxy, true);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, element);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, proxy);
            	      					}
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_15, 12);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_16, 12);
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_15, 13);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_16, 13);
              	
            }
            a5=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Variable_005fDeclaration402); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable_Declaration();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_1_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a5, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 14, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 14, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 14, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 14, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 14, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 14);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 14);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 14);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 3, parse_OrchestrationLanguage_Variable_005fDeclaration_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Variable_005fDeclaration"


    // $ANTLR start "parse_OrchestrationLanguage_Variable"
    // Ol.g:791:1: parse_OrchestrationLanguage_Variable returns [OrchestrationLanguage.Variable element = null] : a0= 'Variable' a1= '{' ( (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) ) )* a5= '}' ;
    public final OrchestrationLanguage.Variable parse_OrchestrationLanguage_Variable() throws RecognitionException {
        OrchestrationLanguage.Variable element =  null;
        int parse_OrchestrationLanguage_Variable_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a5=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return element; }
            // Ol.g:794:1: (a0= 'Variable' a1= '{' ( (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) ) )* a5= '}' )
            // Ol.g:795:2: a0= 'Variable' a1= '{' ( (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) ) )* a5= '}'
            {
            a0=(Token)match(input,19,FOLLOW_19_in_parse_OrchestrationLanguage_Variable431); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_20, 15);
              	
            }
            a1=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_Variable445); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_21, 16);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_22, 16);
              	
            }
            // Ol.g:824:2: ( (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==20) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // Ol.g:825:3: (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) )
            	    {
            	    // Ol.g:825:3: (a2= 'name' a3= ':' (a4= QUOTED_34_34 ) )
            	    // Ol.g:826:4: a2= 'name' a3= ':' (a4= QUOTED_34_34 )
            	    {
            	    a2=(Token)match(input,20,FOLLOW_20_in_parse_OrchestrationLanguage_Variable468); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_2_0_0_0, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_23, 17);
            	      			
            	    }
            	    a3=(Token)match(input,15,FOLLOW_15_in_parse_OrchestrationLanguage_Variable488); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_2_0_0_1, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_24, 18);
            	      			
            	    }
            	    // Ol.g:854:4: (a4= QUOTED_34_34 )
            	    // Ol.g:855:5: a4= QUOTED_34_34
            	    {
            	    a4=(Token)match(input,QUOTED_34_34,FOLLOW_QUOTED_34_34_in_parse_OrchestrationLanguage_Variable514); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      					if (terminateParsing) {
            	      						throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      					}
            	      					if (element == null) {
            	      						element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      						incompleteObjects.push(element);
            	      					}
            	      					if (a4 != null) {
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("QUOTED_34_34");
            	      						tokenResolver.setOptions(getOptions());
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
            	      						tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE__NAME), result);
            	      						Object resolvedObject = result.getResolvedToken();
            	      						if (resolvedObject == null) {
            	      							addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStopIndex());
            	      						}
            	      						java.lang.String resolved = (java.lang.String) resolvedObject;
            	      						if (resolved != null) {
            	      							Object value = resolved;
            	      							element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.VARIABLE__NAME), value);
            	      							completedElement(value, false);
            	      						}
            	      						collectHiddenTokens(element);
            	      						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_2_0_0_2, resolved, true);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, element);
            	      					}
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_21, 19);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_22, 19);
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_21, 20);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_22, 20);
              	
            }
            a5=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Variable560); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_2_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a5, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_19, 21, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_2);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_25, 21);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_26, 21);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 4, parse_OrchestrationLanguage_Variable_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Variable"


    // $ANTLR start "parse_OrchestrationLanguage_Modules"
    // Ol.g:917:1: parse_OrchestrationLanguage_Modules returns [OrchestrationLanguage.Modules element = null] : ( (a0_0= parse_OrchestrationLanguage_Module ) )* ;
    public final OrchestrationLanguage.Modules parse_OrchestrationLanguage_Modules() throws RecognitionException {
        OrchestrationLanguage.Modules element =  null;
        int parse_OrchestrationLanguage_Modules_StartIndex = input.index();
        OrchestrationLanguage.Module a0_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return element; }
            // Ol.g:920:1: ( ( (a0_0= parse_OrchestrationLanguage_Module ) )* )
            // Ol.g:921:2: ( (a0_0= parse_OrchestrationLanguage_Module ) )*
            {
            // Ol.g:921:2: ( (a0_0= parse_OrchestrationLanguage_Module ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==21) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // Ol.g:922:3: (a0_0= parse_OrchestrationLanguage_Module )
            	    {
            	    // Ol.g:922:3: (a0_0= parse_OrchestrationLanguage_Module )
            	    // Ol.g:923:4: a0_0= parse_OrchestrationLanguage_Module
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Module_in_parse_OrchestrationLanguage_Modules598);
            	    a0_0=parse_OrchestrationLanguage_Module();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModules();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a0_0 != null) {
            	      					if (a0_0 != null) {
            	      						Object value = a0_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.MODULES__CONTAINS, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_3_0_0_0, a0_0, true);
            	      					copyLocalizationInfos(a0_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_0, 22, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_0);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 5, parse_OrchestrationLanguage_Modules_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Modules"


    // $ANTLR start "parse_OrchestrationLanguage_Module"
    // Ol.g:951:1: parse_OrchestrationLanguage_Module returns [OrchestrationLanguage.Module element = null] : a0= 'module' (a1= TEXT ) a2= '{' ( (a3_0= parse_OrchestrationLanguage_Import ) )* ( (a4_0= parse_OrchestrationLanguage_Service ) )* a5= '}' ;
    public final OrchestrationLanguage.Module parse_OrchestrationLanguage_Module() throws RecognitionException {
        OrchestrationLanguage.Module element =  null;
        int parse_OrchestrationLanguage_Module_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a5=null;
        OrchestrationLanguage.Import a3_0 = null;

        OrchestrationLanguage.Service a4_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return element; }
            // Ol.g:954:1: (a0= 'module' (a1= TEXT ) a2= '{' ( (a3_0= parse_OrchestrationLanguage_Import ) )* ( (a4_0= parse_OrchestrationLanguage_Service ) )* a5= '}' )
            // Ol.g:955:2: a0= 'module' (a1= TEXT ) a2= '{' ( (a3_0= parse_OrchestrationLanguage_Import ) )* ( (a4_0= parse_OrchestrationLanguage_Service ) )* a5= '}'
            {
            a0=(Token)match(input,21,FOLLOW_21_in_parse_OrchestrationLanguage_Module639); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_27, 23);
              	
            }
            // Ol.g:969:2: (a1= TEXT )
            // Ol.g:970:3: a1= TEXT
            {
            a1=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Module657); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
              				incompleteObjects.push(element);
              			}
              			if (a1 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.MODULE__NAME), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.MODULE__NAME), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_1, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a1, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_28, 24);
              	
            }
            a2=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_Module678); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_2, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_29, 25, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_3);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 25, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 25, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 25, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 25);
              	
            }
            // Ol.g:1023:2: ( (a3_0= parse_OrchestrationLanguage_Import ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==22) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // Ol.g:1024:3: (a3_0= parse_OrchestrationLanguage_Import )
            	    {
            	    // Ol.g:1024:3: (a3_0= parse_OrchestrationLanguage_Import )
            	    // Ol.g:1025:4: a3_0= parse_OrchestrationLanguage_Import
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Import_in_parse_OrchestrationLanguage_Module701);
            	    a3_0=parse_OrchestrationLanguage_Import();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a3_0 != null) {
            	      					if (a3_0 != null) {
            	      						Object value = a3_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.MODULE__IMPORTS, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_3, a3_0, true);
            	      					copyLocalizationInfos(a3_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_29, 26, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_3);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 26, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 26, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 26, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 26);
              	
            }
            // Ol.g:1055:2: ( (a4_0= parse_OrchestrationLanguage_Service ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==24||LA6_0==27) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // Ol.g:1056:3: (a4_0= parse_OrchestrationLanguage_Service )
            	    {
            	    // Ol.g:1056:3: (a4_0= parse_OrchestrationLanguage_Service )
            	    // Ol.g:1057:4: a4_0= parse_OrchestrationLanguage_Service
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Service_in_parse_OrchestrationLanguage_Module736);
            	    a4_0=parse_OrchestrationLanguage_Service();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a4_0 != null) {
            	      					if (a4_0 != null) {
            	      						Object value = a4_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.MODULE__PROVIDE, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_4, a4_0, true);
            	      					copyLocalizationInfos(a4_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 27, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 27, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 27, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 27);
              	
            }
            a5=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Module762); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_4_0_0_5, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a5, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_0, 28, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_0);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 6, parse_OrchestrationLanguage_Module_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Module"


    // $ANTLR start "parse_OrchestrationLanguage_Import"
    // Ol.g:1102:1: parse_OrchestrationLanguage_Import returns [OrchestrationLanguage.Import element = null] : a0= 'import' (a1= TEXT ) a2= ';' ;
    public final OrchestrationLanguage.Import parse_OrchestrationLanguage_Import() throws RecognitionException {
        OrchestrationLanguage.Import element =  null;
        int parse_OrchestrationLanguage_Import_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return element; }
            // Ol.g:1105:1: (a0= 'import' (a1= TEXT ) a2= ';' )
            // Ol.g:1106:2: a0= 'import' (a1= TEXT ) a2= ';'
            {
            a0=(Token)match(input,22,FOLLOW_22_in_parse_OrchestrationLanguage_Import791); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createImport();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_5_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_34, 29);
              	
            }
            // Ol.g:1120:2: (a1= TEXT )
            // Ol.g:1121:3: a1= TEXT
            {
            a1=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Import809); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createImport();
              				incompleteObjects.push(element);
              			}
              			if (a1 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IMPORT__REFERENCES), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStopIndex());
              				}
              				String resolved = (String) resolvedObject;
              				OrchestrationLanguage.Module proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createModule();
              				collectHiddenTokens(element);
              				registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Import, OrchestrationLanguage.Module>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getImportReferencesReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IMPORT__REFERENCES), resolved, proxy);
              				if (proxy != null) {
              					Object value = proxy;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IMPORT__REFERENCES), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_5_0_0_1, proxy, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a1, element);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a1, proxy);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_35, 30);
              	
            }
            a2=(Token)match(input,23,FOLLOW_23_in_parse_OrchestrationLanguage_Import830); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createImport();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_5_0_0_2, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_29, 31, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_3);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 31, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 31, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 31, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 31);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 7, parse_OrchestrationLanguage_Import_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Import"


    // $ANTLR start "parse_OrchestrationLanguage_ExternalServices"
    // Ol.g:1180:1: parse_OrchestrationLanguage_ExternalServices returns [OrchestrationLanguage.ExternalServices element = null] : a0= 'service' (a1= TEXT ) a2= '@' (a3= QUOTED_60_62 ) a4= '{' ( (a5_0= parse_OrchestrationLanguage_Process ) )+ a6= '}' ;
    public final OrchestrationLanguage.ExternalServices parse_OrchestrationLanguage_ExternalServices() throws RecognitionException {
        OrchestrationLanguage.ExternalServices element =  null;
        int parse_OrchestrationLanguage_ExternalServices_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a6=null;
        OrchestrationLanguage.Process a5_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return element; }
            // Ol.g:1183:1: (a0= 'service' (a1= TEXT ) a2= '@' (a3= QUOTED_60_62 ) a4= '{' ( (a5_0= parse_OrchestrationLanguage_Process ) )+ a6= '}' )
            // Ol.g:1184:2: a0= 'service' (a1= TEXT ) a2= '@' (a3= QUOTED_60_62 ) a4= '{' ( (a5_0= parse_OrchestrationLanguage_Process ) )+ a6= '}'
            {
            a0=(Token)match(input,24,FOLLOW_24_in_parse_OrchestrationLanguage_ExternalServices859); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_36, 32);
              	
            }
            // Ol.g:1198:2: (a1= TEXT )
            // Ol.g:1199:3: a1= TEXT
            {
            a1=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_ExternalServices877); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              				incompleteObjects.push(element);
              			}
              			if (a1 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.EXTERNAL_SERVICES__NAME), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a1).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.EXTERNAL_SERVICES__NAME), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_1, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a1, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_37, 33);
              	
            }
            a2=(Token)match(input,25,FOLLOW_25_in_parse_OrchestrationLanguage_ExternalServices898); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_2, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a2, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_38, 34);
              	
            }
            // Ol.g:1248:2: (a3= QUOTED_60_62 )
            // Ol.g:1249:3: a3= QUOTED_60_62
            {
            a3=(Token)match(input,QUOTED_60_62,FOLLOW_QUOTED_60_62_in_parse_OrchestrationLanguage_ExternalServices916); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              				incompleteObjects.push(element);
              			}
              			if (a3 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("QUOTED_60_62");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a3.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.EXTERNAL_SERVICES__LOCATION), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a3).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a3).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a3).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a3).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.EXTERNAL_SERVICES__LOCATION), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_3, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a3, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_39, 35);
              	
            }
            a4=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_ExternalServices937); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_4, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a4, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_40, 36, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 36, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              	
            }
            // Ol.g:1299:2: ( (a5_0= parse_OrchestrationLanguage_Process ) )+
            int cnt7=0;
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==TEXT) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // Ol.g:1300:3: (a5_0= parse_OrchestrationLanguage_Process )
            	    {
            	    // Ol.g:1300:3: (a5_0= parse_OrchestrationLanguage_Process )
            	    // Ol.g:1301:4: a5_0= parse_OrchestrationLanguage_Process
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Process_in_parse_OrchestrationLanguage_ExternalServices960);
            	    a5_0=parse_OrchestrationLanguage_Process();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a5_0 != null) {
            	      					if (a5_0 != null) {
            	      						Object value = a5_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.EXTERNAL_SERVICES__OPERATIONS, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_5, a5_0, true);
            	      					copyLocalizationInfos(a5_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt7 >= 1 ) break loop7;
            	    if (state.backtracking>0) {state.failed=true; return element;}
                        EarlyExitException eee =
                            new EarlyExitException(7, input);
                        throw eee;
                }
                cnt7++;
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_40, 37, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 37, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_42, 37);
              	
            }
            a6=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_ExternalServices986); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_6_0_0_6, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a6, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 38, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 38, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 38, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 38);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 8, parse_OrchestrationLanguage_ExternalServices_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_ExternalServices"


    // $ANTLR start "parse_OrchestrationLanguage_InternalServices"
    // Ol.g:1348:1: parse_OrchestrationLanguage_InternalServices returns [OrchestrationLanguage.InternalServices element = null] : ( (a0_0= parse_OrchestrationLanguage_Main ) )? a1= 'service' (a2= TEXT ) ( (a3= 'uses' ( (a4= TEXT ) )+ ) )? a5= '{' ( (a6_0= parse_OrchestrationLanguage_InternalProcess ) )+ a7= '}' ;
    public final OrchestrationLanguage.InternalServices parse_OrchestrationLanguage_InternalServices() throws RecognitionException {
        OrchestrationLanguage.InternalServices element =  null;
        int parse_OrchestrationLanguage_InternalServices_StartIndex = input.index();
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a5=null;
        Token a7=null;
        OrchestrationLanguage.Main a0_0 = null;

        OrchestrationLanguage.InternalProcess a6_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return element; }
            // Ol.g:1351:1: ( ( (a0_0= parse_OrchestrationLanguage_Main ) )? a1= 'service' (a2= TEXT ) ( (a3= 'uses' ( (a4= TEXT ) )+ ) )? a5= '{' ( (a6_0= parse_OrchestrationLanguage_InternalProcess ) )+ a7= '}' )
            // Ol.g:1352:2: ( (a0_0= parse_OrchestrationLanguage_Main ) )? a1= 'service' (a2= TEXT ) ( (a3= 'uses' ( (a4= TEXT ) )+ ) )? a5= '{' ( (a6_0= parse_OrchestrationLanguage_InternalProcess ) )+ a7= '}'
            {
            // Ol.g:1352:2: ( (a0_0= parse_OrchestrationLanguage_Main ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==27) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // Ol.g:1353:3: (a0_0= parse_OrchestrationLanguage_Main )
                    {
                    // Ol.g:1353:3: (a0_0= parse_OrchestrationLanguage_Main )
                    // Ol.g:1354:4: a0_0= parse_OrchestrationLanguage_Main
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_Main_in_parse_OrchestrationLanguage_InternalServices1024);
                    a0_0=parse_OrchestrationLanguage_Main();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      				if (terminateParsing) {
                      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                      				}
                      				if (element == null) {
                      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
                      					incompleteObjects.push(element);
                      				}
                      				if (a0_0 != null) {
                      					if (a0_0 != null) {
                      						Object value = a0_0;
                      						element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__MAIN), value);
                      						completedElement(value, true);
                      					}
                      					collectHiddenTokens(element);
                      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_0, a0_0, true);
                      					copyLocalizationInfos(a0_0, element);
                      				}
                      			
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 39);
              	
            }
            a1=(Token)match(input,24,FOLLOW_24_in_parse_OrchestrationLanguage_InternalServices1050); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_43, 40);
              	
            }
            // Ol.g:1394:2: (a2= TEXT )
            // Ol.g:1395:3: a2= TEXT
            {
            a2=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalServices1068); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
              				incompleteObjects.push(element);
              			}
              			if (a2 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__NAME), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__NAME), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_2, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_44, 41);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_45, 41);
              	
            }
            // Ol.g:1431:2: ( (a3= 'uses' ( (a4= TEXT ) )+ ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==26) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // Ol.g:1432:3: (a3= 'uses' ( (a4= TEXT ) )+ )
                    {
                    // Ol.g:1432:3: (a3= 'uses' ( (a4= TEXT ) )+ )
                    // Ol.g:1433:4: a3= 'uses' ( (a4= TEXT ) )+
                    {
                    a3=(Token)match(input,26,FOLLOW_26_in_parse_OrchestrationLanguage_InternalServices1098); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      				if (element == null) {
                      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
                      					incompleteObjects.push(element);
                      				}
                      				collectHiddenTokens(element);
                      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_3_0_0_0, null, true);
                      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
                      			
                    }
                    if ( state.backtracking==0 ) {

                      				// expected elements (follow set)
                      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_46, 42);
                      			
                    }
                    // Ol.g:1447:4: ( (a4= TEXT ) )+
                    int cnt9=0;
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

                        if ( (LA9_0==TEXT) ) {
                            alt9=1;
                        }


                        switch (alt9) {
                    	case 1 :
                    	    // Ol.g:1448:5: (a4= TEXT )
                    	    {
                    	    // Ol.g:1448:5: (a4= TEXT )
                    	    // Ol.g:1449:6: a4= TEXT
                    	    {
                    	    a4=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalServices1131); if (state.failed) return element;
                    	    if ( state.backtracking==0 ) {

                    	      						if (terminateParsing) {
                    	      							throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                    	      						}
                    	      						if (element == null) {
                    	      							element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
                    	      							incompleteObjects.push(element);
                    	      						}
                    	      						if (a4 != null) {
                    	      							OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
                    	      							tokenResolver.setOptions(getOptions());
                    	      							OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
                    	      							tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__USES), result);
                    	      							Object resolvedObject = result.getResolvedToken();
                    	      							if (resolvedObject == null) {
                    	      								addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a4).getStopIndex());
                    	      							}
                    	      							String resolved = (String) resolvedObject;
                    	      							OrchestrationLanguage.Service proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createExternalServices();
                    	      							collectHiddenTokens(element);
                    	      							registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.InternalServices, OrchestrationLanguage.Service>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getInternalServicesUsesReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__USES), resolved, proxy);
                    	      							if (proxy != null) {
                    	      								Object value = proxy;
                    	      								addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__USES, value);
                    	      								completedElement(value, false);
                    	      							}
                    	      							collectHiddenTokens(element);
                    	      							retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_3_0_0_1, proxy, true);
                    	      							copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, element);
                    	      							copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a4, proxy);
                    	      						}
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt9 >= 1 ) break loop9;
                    	    if (state.backtracking>0) {state.failed=true; return element;}
                                EarlyExitException eee =
                                    new EarlyExitException(9, input);
                                throw eee;
                        }
                        cnt9++;
                    } while (true);

                    if ( state.backtracking==0 ) {

                      				// expected elements (follow set)
                      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_46, 43);
                      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_45, 43);
                      			
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_45, 44);
              	
            }
            a5=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_InternalServices1190); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_4, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a5, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 45, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_7);
              	
            }
            // Ol.g:1511:2: ( (a6_0= parse_OrchestrationLanguage_InternalProcess ) )+
            int cnt11=0;
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==TEXT) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // Ol.g:1512:3: (a6_0= parse_OrchestrationLanguage_InternalProcess )
            	    {
            	    // Ol.g:1512:3: (a6_0= parse_OrchestrationLanguage_InternalProcess )
            	    // Ol.g:1513:4: a6_0= parse_OrchestrationLanguage_InternalProcess
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_InternalProcess_in_parse_OrchestrationLanguage_InternalServices1213);
            	    a6_0=parse_OrchestrationLanguage_InternalProcess();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a6_0 != null) {
            	      					if (a6_0 != null) {
            	      						Object value = a6_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_SERVICES__INTERNAL_OPERATIONS, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_5, a6_0, true);
            	      					copyLocalizationInfos(a6_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt11 >= 1 ) break loop11;
            	    if (state.backtracking>0) {state.failed=true; return element;}
                        EarlyExitException eee =
                            new EarlyExitException(11, input);
                        throw eee;
                }
                cnt11++;
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 46, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_7);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_47, 46);
              	
            }
            a7=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_InternalServices1239); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalServices();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_7_0_0_6, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a7, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_30, 47, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_31, 47, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_5, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 47, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_4);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_33, 47);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 9, parse_OrchestrationLanguage_InternalServices_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_InternalServices"


    // $ANTLR start "parse_OrchestrationLanguage_Main"
    // Ol.g:1559:1: parse_OrchestrationLanguage_Main returns [OrchestrationLanguage.Main element = null] : a0= 'main' ;
    public final OrchestrationLanguage.Main parse_OrchestrationLanguage_Main() throws RecognitionException {
        OrchestrationLanguage.Main element =  null;
        int parse_OrchestrationLanguage_Main_StartIndex = input.index();
        Token a0=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return element; }
            // Ol.g:1562:1: (a0= 'main' )
            // Ol.g:1563:2: a0= 'main'
            {
            a0=(Token)match(input,27,FOLLOW_27_in_parse_OrchestrationLanguage_Main1268); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createMain();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_8_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_32, 48);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 10, parse_OrchestrationLanguage_Main_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Main"


    // $ANTLR start "parse_OrchestrationLanguage_Process"
    // Ol.g:1579:1: parse_OrchestrationLanguage_Process returns [OrchestrationLanguage.Process element = null] : ( (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ');' | c0= parse_OrchestrationLanguage_InternalProcess );
    public final OrchestrationLanguage.Process parse_OrchestrationLanguage_Process() throws RecognitionException {
        OrchestrationLanguage.Process element =  null;
        int parse_OrchestrationLanguage_Process_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a3=null;
        OrchestrationLanguage.Variable a2_0 = null;

        OrchestrationLanguage.InternalProcess c0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return element; }
            // Ol.g:1582:1: ( (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ');' | c0= parse_OrchestrationLanguage_InternalProcess )
            int alt13=2;
            alt13 = dfa13.predict(input);
            switch (alt13) {
                case 1 :
                    // Ol.g:1583:2: (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ');'
                    {
                    // Ol.g:1583:2: (a0= TEXT )
                    // Ol.g:1584:3: a0= TEXT
                    {
                    a0=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Process1301); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      			if (terminateParsing) {
                      				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                      			}
                      			if (element == null) {
                      				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createProcess();
                      				incompleteObjects.push(element);
                      			}
                      			if (a0 != null) {
                      				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
                      				tokenResolver.setOptions(getOptions());
                      				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
                      				tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.PROCESS__NAME), result);
                      				Object resolvedObject = result.getResolvedToken();
                      				if (resolvedObject == null) {
                      					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStopIndex());
                      				}
                      				java.lang.String resolved = (java.lang.String) resolvedObject;
                      				if (resolved != null) {
                      					Object value = resolved;
                      					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.PROCESS__NAME), value);
                      					completedElement(value, false);
                      				}
                      				collectHiddenTokens(element);
                      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_9_0_0_0, resolved, true);
                      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, element);
                      			}
                      		
                    }

                    }

                    if ( state.backtracking==0 ) {

                      		// expected elements (follow set)
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_48, 49);
                      	
                    }
                    a1=(Token)match(input,28,FOLLOW_28_in_parse_OrchestrationLanguage_Process1322); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      		if (element == null) {
                      			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createProcess();
                      			incompleteObjects.push(element);
                      		}
                      		collectHiddenTokens(element);
                      		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_9_0_0_1, null, true);
                      		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
                      	
                    }
                    if ( state.backtracking==0 ) {

                      		// expected elements (follow set)
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_19, 50, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_2);
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_25, 50);
                      	
                    }
                    // Ol.g:1634:2: ( (a2_0= parse_OrchestrationLanguage_Variable ) )*
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( (LA12_0==19) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                    	case 1 :
                    	    // Ol.g:1635:3: (a2_0= parse_OrchestrationLanguage_Variable )
                    	    {
                    	    // Ol.g:1635:3: (a2_0= parse_OrchestrationLanguage_Variable )
                    	    // Ol.g:1636:4: a2_0= parse_OrchestrationLanguage_Variable
                    	    {
                    	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Variable_in_parse_OrchestrationLanguage_Process1345);
                    	    a2_0=parse_OrchestrationLanguage_Variable();

                    	    state._fsp--;
                    	    if (state.failed) return element;
                    	    if ( state.backtracking==0 ) {

                    	      				if (terminateParsing) {
                    	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                    	      				}
                    	      				if (element == null) {
                    	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createProcess();
                    	      					incompleteObjects.push(element);
                    	      				}
                    	      				if (a2_0 != null) {
                    	      					if (a2_0 != null) {
                    	      						Object value = a2_0;
                    	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.PROCESS__PARAMETERS, value);
                    	      						completedElement(value, true);
                    	      					}
                    	      					collectHiddenTokens(element);
                    	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_9_0_0_2, a2_0, true);
                    	      					copyLocalizationInfos(a2_0, element);
                    	      				}
                    	      			
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop12;
                        }
                    } while (true);

                    if ( state.backtracking==0 ) {

                      		// expected elements (follow set)
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_19, 51, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_2);
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_25, 51);
                      	
                    }
                    a3=(Token)match(input,29,FOLLOW_29_in_parse_OrchestrationLanguage_Process1371); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      		if (element == null) {
                      			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createProcess();
                      			incompleteObjects.push(element);
                      		}
                      		collectHiddenTokens(element);
                      		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_9_0_0_3, null, true);
                      		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
                      	
                    }
                    if ( state.backtracking==0 ) {

                      		// expected elements (follow set)
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_40, 52, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 52, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
                      		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_42, 52);
                      	
                    }

                    }
                    break;
                case 2 :
                    // Ol.g:1681:2: c0= parse_OrchestrationLanguage_InternalProcess
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_InternalProcess_in_parse_OrchestrationLanguage_Process1390);
                    c0=parse_OrchestrationLanguage_InternalProcess();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c0; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 11, parse_OrchestrationLanguage_Process_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Process"


    // $ANTLR start "parse_OrchestrationLanguage_InternalProcess"
    // Ol.g:1685:1: parse_OrchestrationLanguage_InternalProcess returns [OrchestrationLanguage.InternalProcess element = null] : (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}' ;
    public final OrchestrationLanguage.InternalProcess parse_OrchestrationLanguage_InternalProcess() throws RecognitionException {
        OrchestrationLanguage.InternalProcess element =  null;
        int parse_OrchestrationLanguage_InternalProcess_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a3=null;
        Token a4=null;
        Token a6=null;
        OrchestrationLanguage.Variable a2_0 = null;

        OrchestrationLanguage.Command a5_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return element; }
            // Ol.g:1688:1: ( (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}' )
            // Ol.g:1689:2: (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}'
            {
            // Ol.g:1689:2: (a0= TEXT )
            // Ol.g:1690:3: a0= TEXT
            {
            a0=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalProcess1419); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
              				incompleteObjects.push(element);
              			}
              			if (a0 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_PROCESS__NAME), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_PROCESS__NAME), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_0, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_49, 53);
              	
            }
            a1=(Token)match(input,28,FOLLOW_28_in_parse_OrchestrationLanguage_InternalProcess1440); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_19, 54, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_2);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_26, 54);
              	
            }
            // Ol.g:1740:2: ( (a2_0= parse_OrchestrationLanguage_Variable ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==19) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // Ol.g:1741:3: (a2_0= parse_OrchestrationLanguage_Variable )
            	    {
            	    // Ol.g:1741:3: (a2_0= parse_OrchestrationLanguage_Variable )
            	    // Ol.g:1742:4: a2_0= parse_OrchestrationLanguage_Variable
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Variable_in_parse_OrchestrationLanguage_InternalProcess1463);
            	    a2_0=parse_OrchestrationLanguage_Variable();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a2_0 != null) {
            	      					if (a2_0 != null) {
            	      						Object value = a2_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_PROCESS__PARAMETERS, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_2, a2_0, true);
            	      					copyLocalizationInfos(a2_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_19, 55, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_2);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_26, 55);
              	
            }
            a3=(Token)match(input,30,FOLLOW_30_in_parse_OrchestrationLanguage_InternalProcess1489); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_50, 56);
              	
            }
            a4=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_InternalProcess1503); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_4, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a4, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 57, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 57, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 57, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 57, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 57, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              	
            }
            // Ol.g:1801:2: ( (a5_0= parse_OrchestrationLanguage_Command ) )+
            int cnt15=0;
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==TEXT||LA15_0==12||LA15_0==17||(LA15_0>=33 && LA15_0<=34)) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // Ol.g:1802:3: (a5_0= parse_OrchestrationLanguage_Command )
            	    {
            	    // Ol.g:1802:3: (a5_0= parse_OrchestrationLanguage_Command )
            	    // Ol.g:1803:4: a5_0= parse_OrchestrationLanguage_Command
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_InternalProcess1526);
            	    a5_0=parse_OrchestrationLanguage_Command();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a5_0 != null) {
            	      					if (a5_0 != null) {
            	      						Object value = a5_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.INTERNAL_PROCESS__SEQUENCE, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_5, a5_0, true);
            	      					copyLocalizationInfos(a5_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt15 >= 1 ) break loop15;
            	    if (state.backtracking>0) {state.failed=true; return element;}
                        EarlyExitException eee =
                            new EarlyExitException(15, input);
                        throw eee;
                }
                cnt15++;
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 58, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 58, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 58, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 58, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 58, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 58);
              	
            }
            a6=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_InternalProcess1552); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createInternalProcess();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_10_0_0_6, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a6, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_40, 59, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_41, 59, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_6);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_42, 59);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_47, 59);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 12, parse_OrchestrationLanguage_InternalProcess_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_InternalProcess"


    // $ANTLR start "parse_OrchestrationLanguage_Call"
    // Ol.g:1853:1: parse_OrchestrationLanguage_Call returns [OrchestrationLanguage.Call element = null] : (a0= TEXT ) a1= '(' ( (a2= TEXT ) )? a3= ');' ;
    public final OrchestrationLanguage.Call parse_OrchestrationLanguage_Call() throws RecognitionException {
        OrchestrationLanguage.Call element =  null;
        int parse_OrchestrationLanguage_Call_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return element; }
            // Ol.g:1856:1: ( (a0= TEXT ) a1= '(' ( (a2= TEXT ) )? a3= ');' )
            // Ol.g:1857:2: (a0= TEXT ) a1= '(' ( (a2= TEXT ) )? a3= ');'
            {
            // Ol.g:1857:2: (a0= TEXT )
            // Ol.g:1858:3: a0= TEXT
            {
            a0=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Call1585); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createCall();
              				incompleteObjects.push(element);
              			}
              			if (a0 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.CALL__TARGET), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStopIndex());
              				}
              				String resolved = (String) resolvedObject;
              				OrchestrationLanguage.Process proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createProcess();
              				collectHiddenTokens(element);
              				registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Call, OrchestrationLanguage.Process>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getCallTargetReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.CALL__TARGET), resolved, proxy);
              				if (proxy != null) {
              					Object value = proxy;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.CALL__TARGET), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_11_0_0_0, proxy, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, element);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, proxy);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_51, 60);
              	
            }
            a1=(Token)match(input,28,FOLLOW_28_in_parse_OrchestrationLanguage_Call1606); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createCall();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_11_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_52, 61);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_53, 61);
              	
            }
            // Ol.g:1912:2: ( (a2= TEXT ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==TEXT) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // Ol.g:1913:3: (a2= TEXT )
                    {
                    // Ol.g:1913:3: (a2= TEXT )
                    // Ol.g:1914:4: a2= TEXT
                    {
                    a2=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Call1629); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      				if (terminateParsing) {
                      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                      				}
                      				if (element == null) {
                      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createCall();
                      					incompleteObjects.push(element);
                      				}
                      				if (a2 != null) {
                      					OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
                      					tokenResolver.setOptions(getOptions());
                      					OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
                      					tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.CALL__INPUT), result);
                      					Object resolvedObject = result.getResolvedToken();
                      					if (resolvedObject == null) {
                      						addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStopIndex());
                      					}
                      					String resolved = (String) resolvedObject;
                      					OrchestrationLanguage.Argument proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
                      					collectHiddenTokens(element);
                      					registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Call, OrchestrationLanguage.Argument>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getCallInputReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.CALL__INPUT), resolved, proxy);
                      					if (proxy != null) {
                      						Object value = proxy;
                      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.CALL__INPUT, value);
                      						completedElement(value, false);
                      					}
                      					collectHiddenTokens(element);
                      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_11_0_0_2, proxy, true);
                      					copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, element);
                      					copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, proxy);
                      				}
                      			
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_53, 62);
              	
            }
            a3=(Token)match(input,29,FOLLOW_29_in_parse_OrchestrationLanguage_Call1659); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createCall();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_11_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 63, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 63, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 63, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 63, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 63, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 63);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 63);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 63);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 13, parse_OrchestrationLanguage_Call_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Call"


    // $ANTLR start "parse_OrchestrationLanguage_Argument"
    // Ol.g:1977:1: parse_OrchestrationLanguage_Argument returns [OrchestrationLanguage.Argument element = null] : ( ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? ) )* a4= '}' ;
    public final OrchestrationLanguage.Argument parse_OrchestrationLanguage_Argument() throws RecognitionException {
        OrchestrationLanguage.Argument element =  null;
        int parse_OrchestrationLanguage_Argument_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;



        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return element; }
            // Ol.g:1980:1: ( ( ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? ) )* a4= '}' )
            // Ol.g:1981:2: ( ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? ) )* a4= '}'
            {
            // Ol.g:1981:2: ( ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==TEXT) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // Ol.g:1982:3: ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? )
            	    {
            	    // Ol.g:1982:3: ( (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )? )
            	    // Ol.g:1983:4: (a0= TEXT ) a1= '=' (a2= TEXT ) ( (a3= ',' ) )?
            	    {
            	    // Ol.g:1983:4: (a0= TEXT )
            	    // Ol.g:1984:5: a0= TEXT
            	    {
            	    a0=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Argument1703); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      					if (terminateParsing) {
            	      						throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      					}
            	      					if (element == null) {
            	      						element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
            	      						incompleteObjects.push(element);
            	      					}
            	      					if (a0 != null) {
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
            	      						tokenResolver.setOptions(getOptions());
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
            	      						tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_TO), result);
            	      						Object resolvedObject = result.getResolvedToken();
            	      						if (resolvedObject == null) {
            	      							addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a0).getStopIndex());
            	      						}
            	      						String resolved = (String) resolvedObject;
            	      						OrchestrationLanguage.Variable proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      						collectHiddenTokens(element);
            	      						registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Argument, OrchestrationLanguage.Variable>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getArgumentAssignToReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_TO), resolved, proxy);
            	      						if (proxy != null) {
            	      							Object value = proxy;
            	      							element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_TO), value);
            	      							completedElement(value, false);
            	      						}
            	      						collectHiddenTokens(element);
            	      						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_12_0_0_0_0_0_0, proxy, true);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, element);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a0, proxy);
            	      					}
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_55, 64);
            	      			
            	    }
            	    a1=(Token)match(input,31,FOLLOW_31_in_parse_OrchestrationLanguage_Argument1736); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
            	      					incompleteObjects.push(element);
            	      				}
            	      				collectHiddenTokens(element);
            	      				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_12_0_0_0_0_0_1, null, true);
            	      				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_56, 65);
            	      			
            	    }
            	    // Ol.g:2037:4: (a2= TEXT )
            	    // Ol.g:2038:5: a2= TEXT
            	    {
            	    a2=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_Argument1762); if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      					if (terminateParsing) {
            	      						throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      					}
            	      					if (element == null) {
            	      						element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
            	      						incompleteObjects.push(element);
            	      					}
            	      					if (a2 != null) {
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
            	      						tokenResolver.setOptions(getOptions());
            	      						OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
            	      						tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_FROM), result);
            	      						Object resolvedObject = result.getResolvedToken();
            	      						if (resolvedObject == null) {
            	      							addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStopIndex());
            	      						}
            	      						String resolved = (String) resolvedObject;
            	      						OrchestrationLanguage.Variable proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createVariable();
            	      						collectHiddenTokens(element);
            	      						registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.Argument, OrchestrationLanguage.Variable>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getArgumentAssignFromReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_FROM), resolved, proxy);
            	      						if (proxy != null) {
            	      							Object value = proxy;
            	      							element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.ARGUMENT__ASSIGN_FROM), value);
            	      							completedElement(value, false);
            	      						}
            	      						collectHiddenTokens(element);
            	      						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_12_0_0_0_0_0_2, proxy, true);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, element);
            	      						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, proxy);
            	      					}
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_57, 66);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_54, 66);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_58, 66);
            	      			
            	    }
            	    // Ol.g:2079:4: ( (a3= ',' ) )?
            	    int alt17=2;
            	    int LA17_0 = input.LA(1);

            	    if ( (LA17_0==32) ) {
            	        alt17=1;
            	    }
            	    switch (alt17) {
            	        case 1 :
            	            // Ol.g:2080:5: (a3= ',' )
            	            {
            	            // Ol.g:2080:5: (a3= ',' )
            	            // Ol.g:2081:6: a3= ','
            	            {
            	            a3=(Token)match(input,32,FOLLOW_32_in_parse_OrchestrationLanguage_Argument1808); if (state.failed) return element;
            	            if ( state.backtracking==0 ) {

            	              						if (element == null) {
            	              							element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
            	              							incompleteObjects.push(element);
            	              						}
            	              						collectHiddenTokens(element);
            	              						retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_12_0_0_0_0_0_3_0_0_0, null, true);
            	              						copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
            	              					
            	            }
            	            if ( state.backtracking==0 ) {

            	              						// expected elements (follow set)
            	              						addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_54, 67);
            	              						addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_58, 67);
            	              					
            	            }

            	            }


            	            }
            	            break;

            	    }

            	    if ( state.backtracking==0 ) {

            	      				// expected elements (follow set)
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_54, 68);
            	      				addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_58, 68);
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_54, 69);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_58, 69);
              	
            }
            a4=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Argument1870); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createArgument();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_12_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a4, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 14, parse_OrchestrationLanguage_Argument_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Argument"


    // $ANTLR start "parse_OrchestrationLanguage_If"
    // Ol.g:2127:1: parse_OrchestrationLanguage_If returns [OrchestrationLanguage.If element = null] : a0= 'if' a1= '(' (a2= TEXT ) a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}' ( (a7= TEXT ) )? ;
    public final OrchestrationLanguage.If parse_OrchestrationLanguage_If() throws RecognitionException {
        OrchestrationLanguage.If element =  null;
        int parse_OrchestrationLanguage_If_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a2=null;
        Token a3=null;
        Token a4=null;
        Token a6=null;
        Token a7=null;
        OrchestrationLanguage.Command a5_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return element; }
            // Ol.g:2130:1: (a0= 'if' a1= '(' (a2= TEXT ) a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}' ( (a7= TEXT ) )? )
            // Ol.g:2131:2: a0= 'if' a1= '(' (a2= TEXT ) a3= ')' a4= '{' ( (a5_0= parse_OrchestrationLanguage_Command ) )+ a6= '}' ( (a7= TEXT ) )?
            {
            a0=(Token)match(input,33,FOLLOW_33_in_parse_OrchestrationLanguage_If1899); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_59, 71);
              	
            }
            a1=(Token)match(input,28,FOLLOW_28_in_parse_OrchestrationLanguage_If1913); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_60, 72);
              	
            }
            // Ol.g:2159:2: (a2= TEXT )
            // Ol.g:2160:3: a2= TEXT
            {
            a2=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_If1931); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              			if (terminateParsing) {
              				throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
              			}
              			if (element == null) {
              				element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              				incompleteObjects.push(element);
              			}
              			if (a2 != null) {
              				OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
              				tokenResolver.setOptions(getOptions());
              				OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
              				tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IF__CONDITION), result);
              				Object resolvedObject = result.getResolvedToken();
              				if (resolvedObject == null) {
              					addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a2).getStopIndex());
              				}
              				java.lang.String resolved = (java.lang.String) resolvedObject;
              				if (resolved != null) {
              					Object value = resolved;
              					element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IF__CONDITION), value);
              					completedElement(value, false);
              				}
              				collectHiddenTokens(element);
              				retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_2, resolved, true);
              				copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a2, element);
              			}
              		
            }

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_61, 73);
              	
            }
            a3=(Token)match(input,30,FOLLOW_30_in_parse_OrchestrationLanguage_If1952); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_62, 74);
              	
            }
            a4=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_If1966); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_4, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a4, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 75, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 75, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 75, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 75, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 75, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              	
            }
            // Ol.g:2227:2: ( (a5_0= parse_OrchestrationLanguage_Command ) )+
            int cnt19=0;
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==TEXT||LA19_0==12||LA19_0==17||(LA19_0>=33 && LA19_0<=34)) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // Ol.g:2228:3: (a5_0= parse_OrchestrationLanguage_Command )
            	    {
            	    // Ol.g:2228:3: (a5_0= parse_OrchestrationLanguage_Command )
            	    // Ol.g:2229:4: a5_0= parse_OrchestrationLanguage_Command
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_If1989);
            	    a5_0=parse_OrchestrationLanguage_Command();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a5_0 != null) {
            	      					if (a5_0 != null) {
            	      						Object value = a5_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.IF__IF_EXECUTE, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_5, a5_0, true);
            	      					copyLocalizationInfos(a5_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt19 >= 1 ) break loop19;
            	    if (state.backtracking>0) {state.failed=true; return element;}
                        EarlyExitException eee =
                            new EarlyExitException(19, input);
                        throw eee;
                }
                cnt19++;
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 76, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 76, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 76, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 76, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 76, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_8);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 76);
              	
            }
            a6=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_If2015); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_6, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a6, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_63, 77);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 77, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 77, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 77, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 77, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 77, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 77);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 77);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 77);
              	
            }
            // Ol.g:2282:2: ( (a7= TEXT ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==TEXT) ) {
                int LA20_1 = input.LA(2);

                if ( (LA20_1==EOF||LA20_1==TEXT||LA20_1==12||(LA20_1>=16 && LA20_1<=17)||(LA20_1>=33 && LA20_1<=34)) ) {
                    alt20=1;
                }
            }
            switch (alt20) {
                case 1 :
                    // Ol.g:2283:3: (a7= TEXT )
                    {
                    // Ol.g:2283:3: (a7= TEXT )
                    // Ol.g:2284:4: a7= TEXT
                    {
                    a7=(Token)match(input,TEXT,FOLLOW_TEXT_in_parse_OrchestrationLanguage_If2038); if (state.failed) return element;
                    if ( state.backtracking==0 ) {

                      				if (terminateParsing) {
                      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
                      				}
                      				if (element == null) {
                      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createIf();
                      					incompleteObjects.push(element);
                      				}
                      				if (a7 != null) {
                      					OrchestrationLanguage.resource.ol.IOlTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("TEXT");
                      					tokenResolver.setOptions(getOptions());
                      					OrchestrationLanguage.resource.ol.IOlTokenResolveResult result = getFreshTokenResolveResult();
                      					tokenResolver.resolve(a7.getText(), element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IF__ELSE), result);
                      					Object resolvedObject = result.getResolvedToken();
                      					if (resolvedObject == null) {
                      						addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_3_0.CommonToken) a7).getLine(), ((org.antlr.runtime3_3_0.CommonToken) a7).getCharPositionInLine(), ((org.antlr.runtime3_3_0.CommonToken) a7).getStartIndex(), ((org.antlr.runtime3_3_0.CommonToken) a7).getStopIndex());
                      					}
                      					String resolved = (String) resolvedObject;
                      					OrchestrationLanguage.Else proxy = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createElse();
                      					collectHiddenTokens(element);
                      					registerContextDependentProxy(new OrchestrationLanguage.resource.ol.mopp.OlContextDependentURIFragmentFactory<OrchestrationLanguage.If, OrchestrationLanguage.Else>(getReferenceResolverSwitch() == null ? null : getReferenceResolverSwitch().getIfElseReferenceResolver()), element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IF__ELSE), resolved, proxy);
                      					if (proxy != null) {
                      						Object value = proxy;
                      						element.eSet(element.eClass().getEStructuralFeature(OrchestrationLanguage.OrchestrationLanguagePackage.IF__ELSE), value);
                      						completedElement(value, false);
                      					}
                      					collectHiddenTokens(element);
                      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_13_0_0_7, proxy, true);
                      					copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a7, element);
                      					copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken) a7, proxy);
                      				}
                      			
                    }

                    }


                    }
                    break;

            }

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 78, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 78, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 78, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 78, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 78, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 78);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 78);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 78);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 15, parse_OrchestrationLanguage_If_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_If"


    // $ANTLR start "parse_OrchestrationLanguage_Else"
    // Ol.g:2333:1: parse_OrchestrationLanguage_Else returns [OrchestrationLanguage.Else element = null] : a0= 'else' a1= '{' ( (a2_0= parse_OrchestrationLanguage_Command ) )+ a3= '}' ;
    public final OrchestrationLanguage.Else parse_OrchestrationLanguage_Else() throws RecognitionException {
        OrchestrationLanguage.Else element =  null;
        int parse_OrchestrationLanguage_Else_StartIndex = input.index();
        Token a0=null;
        Token a1=null;
        Token a3=null;
        OrchestrationLanguage.Command a2_0 = null;




        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return element; }
            // Ol.g:2336:1: (a0= 'else' a1= '{' ( (a2_0= parse_OrchestrationLanguage_Command ) )+ a3= '}' )
            // Ol.g:2337:2: a0= 'else' a1= '{' ( (a2_0= parse_OrchestrationLanguage_Command ) )+ a3= '}'
            {
            a0=(Token)match(input,34,FOLLOW_34_in_parse_OrchestrationLanguage_Else2083); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createElse();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_14_0_0_0, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a0, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_64, 79);
              	
            }
            a1=(Token)match(input,13,FOLLOW_13_in_parse_OrchestrationLanguage_Else2097); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createElse();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_14_0_0_1, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a1, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 80, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 80, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 80, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 80, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 80, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              	
            }
            // Ol.g:2369:2: ( (a2_0= parse_OrchestrationLanguage_Command ) )+
            int cnt21=0;
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==TEXT||LA21_0==12||LA21_0==17||(LA21_0>=33 && LA21_0<=34)) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // Ol.g:2370:3: (a2_0= parse_OrchestrationLanguage_Command )
            	    {
            	    // Ol.g:2370:3: (a2_0= parse_OrchestrationLanguage_Command )
            	    // Ol.g:2371:4: a2_0= parse_OrchestrationLanguage_Command
            	    {
            	    pushFollow(FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_Else2120);
            	    a2_0=parse_OrchestrationLanguage_Command();

            	    state._fsp--;
            	    if (state.failed) return element;
            	    if ( state.backtracking==0 ) {

            	      				if (terminateParsing) {
            	      					throw new OrchestrationLanguage.resource.ol.mopp.OlTerminateParsingException();
            	      				}
            	      				if (element == null) {
            	      					element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createElse();
            	      					incompleteObjects.push(element);
            	      				}
            	      				if (a2_0 != null) {
            	      					if (a2_0 != null) {
            	      						Object value = a2_0;
            	      						addObjectToList(element, OrchestrationLanguage.OrchestrationLanguagePackage.ELSE__ELSE_EXECUTE, value);
            	      						completedElement(value, true);
            	      					}
            	      					collectHiddenTokens(element);
            	      					retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_14_0_0_2, a2_0, true);
            	      					copyLocalizationInfos(a2_0, element);
            	      				}
            	      			
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt21 >= 1 ) break loop21;
            	    if (state.backtracking>0) {state.failed=true; return element;}
                        EarlyExitException eee =
                            new EarlyExitException(21, input);
                        throw eee;
                }
                cnt21++;
            } while (true);

            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 81, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 81, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 81, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 81, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 81, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_9);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 81);
              	
            }
            a3=(Token)match(input,16,FOLLOW_16_in_parse_OrchestrationLanguage_Else2146); if (state.failed) return element;
            if ( state.backtracking==0 ) {

              		if (element == null) {
              			element = OrchestrationLanguage.OrchestrationLanguageFactory.eINSTANCE.createElse();
              			incompleteObjects.push(element);
              		}
              		collectHiddenTokens(element);
              		retrieveLayoutInformation(element, OrchestrationLanguage.resource.ol.grammar.OlGrammarInformationProvider.OL_14_0_0_3, null, true);
              		copyLocalizationInfos((org.antlr.runtime3_3_0.CommonToken)a3, element);
              	
            }
            if ( state.backtracking==0 ) {

              		// expected elements (follow set)
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_1, 82, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_7, 82, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_8, 82, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_9, 82, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_10, 82, OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.FEATURE_1);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_11, 82);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_12, 82);
              		addExpectedElement(OrchestrationLanguage.resource.ol.grammar.OlFollowSetProvider.TERMINAL_13, 82);
              	
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 16, parse_OrchestrationLanguage_Else_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Else"


    // $ANTLR start "parse_OrchestrationLanguage_Service"
    // Ol.g:2425:1: parse_OrchestrationLanguage_Service returns [OrchestrationLanguage.Service element = null] : (c0= parse_OrchestrationLanguage_ExternalServices | c1= parse_OrchestrationLanguage_InternalServices );
    public final OrchestrationLanguage.Service parse_OrchestrationLanguage_Service() throws RecognitionException {
        OrchestrationLanguage.Service element =  null;
        int parse_OrchestrationLanguage_Service_StartIndex = input.index();
        OrchestrationLanguage.ExternalServices c0 = null;

        OrchestrationLanguage.InternalServices c1 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return element; }
            // Ol.g:2426:1: (c0= parse_OrchestrationLanguage_ExternalServices | c1= parse_OrchestrationLanguage_InternalServices )
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==24) ) {
                int LA22_1 = input.LA(2);

                if ( (LA22_1==TEXT) ) {
                    int LA22_3 = input.LA(3);

                    if ( (LA22_3==25) ) {
                        alt22=1;
                    }
                    else if ( (LA22_3==13||LA22_3==26) ) {
                        alt22=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return element;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 22, 3, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return element;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 22, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA22_0==27) ) {
                alt22=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return element;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }
            switch (alt22) {
                case 1 :
                    // Ol.g:2427:2: c0= parse_OrchestrationLanguage_ExternalServices
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_ExternalServices_in_parse_OrchestrationLanguage_Service2171);
                    c0=parse_OrchestrationLanguage_ExternalServices();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c0; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;
                case 2 :
                    // Ol.g:2428:4: c1= parse_OrchestrationLanguage_InternalServices
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_InternalServices_in_parse_OrchestrationLanguage_Service2181);
                    c1=parse_OrchestrationLanguage_InternalServices();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c1; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 17, parse_OrchestrationLanguage_Service_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Service"


    // $ANTLR start "parse_OrchestrationLanguage_Command"
    // Ol.g:2432:1: parse_OrchestrationLanguage_Command returns [OrchestrationLanguage.Command element = null] : (c0= parse_OrchestrationLanguage_Variable_005fAssignment | c1= parse_OrchestrationLanguage_Variable_005fDeclaration | c2= parse_OrchestrationLanguage_Call | c3= parse_OrchestrationLanguage_If | c4= parse_OrchestrationLanguage_Else );
    public final OrchestrationLanguage.Command parse_OrchestrationLanguage_Command() throws RecognitionException {
        OrchestrationLanguage.Command element =  null;
        int parse_OrchestrationLanguage_Command_StartIndex = input.index();
        OrchestrationLanguage.Variable_Assignment c0 = null;

        OrchestrationLanguage.Variable_Declaration c1 = null;

        OrchestrationLanguage.Call c2 = null;

        OrchestrationLanguage.If c3 = null;

        OrchestrationLanguage.Else c4 = null;


        try {
            if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return element; }
            // Ol.g:2433:1: (c0= parse_OrchestrationLanguage_Variable_005fAssignment | c1= parse_OrchestrationLanguage_Variable_005fDeclaration | c2= parse_OrchestrationLanguage_Call | c3= parse_OrchestrationLanguage_If | c4= parse_OrchestrationLanguage_Else )
            int alt23=5;
            switch ( input.LA(1) ) {
            case 12:
                {
                alt23=1;
                }
                break;
            case 17:
                {
                alt23=2;
                }
                break;
            case TEXT:
                {
                alt23=3;
                }
                break;
            case 33:
                {
                alt23=4;
                }
                break;
            case 34:
                {
                alt23=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return element;}
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }

            switch (alt23) {
                case 1 :
                    // Ol.g:2434:2: c0= parse_OrchestrationLanguage_Variable_005fAssignment
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_Variable_005fAssignment_in_parse_OrchestrationLanguage_Command2202);
                    c0=parse_OrchestrationLanguage_Variable_005fAssignment();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c0; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;
                case 2 :
                    // Ol.g:2435:4: c1= parse_OrchestrationLanguage_Variable_005fDeclaration
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_Variable_005fDeclaration_in_parse_OrchestrationLanguage_Command2212);
                    c1=parse_OrchestrationLanguage_Variable_005fDeclaration();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c1; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;
                case 3 :
                    // Ol.g:2436:4: c2= parse_OrchestrationLanguage_Call
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_Call_in_parse_OrchestrationLanguage_Command2222);
                    c2=parse_OrchestrationLanguage_Call();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c2; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;
                case 4 :
                    // Ol.g:2437:4: c3= parse_OrchestrationLanguage_If
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_If_in_parse_OrchestrationLanguage_Command2232);
                    c3=parse_OrchestrationLanguage_If();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c3; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;
                case 5 :
                    // Ol.g:2438:4: c4= parse_OrchestrationLanguage_Else
                    {
                    pushFollow(FOLLOW_parse_OrchestrationLanguage_Else_in_parse_OrchestrationLanguage_Command2242);
                    c4=parse_OrchestrationLanguage_Else();

                    state._fsp--;
                    if (state.failed) return element;
                    if ( state.backtracking==0 ) {
                       element = c4; /* this is a subclass or primitive expression choice */ 
                    }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( state.backtracking>0 ) { memoize(input, 18, parse_OrchestrationLanguage_Command_StartIndex); }
        }
        return element;
    }
    // $ANTLR end "parse_OrchestrationLanguage_Command"

    // Delegated rules


    protected DFA13 dfa13 = new DFA13(this);
    static final String DFA13_eotS =
        "\13\uffff";
    static final String DFA13_eofS =
        "\13\uffff";
    static final String DFA13_minS =
        "\1\4\1\34\1\23\1\15\2\uffff\1\20\1\17\1\23\1\5\1\20";
    static final String DFA13_maxS =
        "\1\4\1\34\1\36\1\15\2\uffff\1\24\1\17\1\36\1\5\1\24";
    static final String DFA13_acceptS =
        "\4\uffff\1\1\1\2\5\uffff";
    static final String DFA13_specialS =
        "\13\uffff}>";
    static final String[] DFA13_transitionS = {
            "\1\1",
            "\1\2",
            "\1\3\11\uffff\1\4\1\5",
            "\1\6",
            "",
            "",
            "\1\10\3\uffff\1\7",
            "\1\11",
            "\1\3\11\uffff\1\4\1\5",
            "\1\12",
            "\1\10\3\uffff\1\7"
    };

    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
    static final short[][] DFA13_transition;

    static {
        int numStates = DFA13_transitionS.length;
        DFA13_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
        }
    }

    class DFA13 extends DFA {

        public DFA13(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 13;
            this.eot = DFA13_eot;
            this.eof = DFA13_eof;
            this.min = DFA13_min;
            this.max = DFA13_max;
            this.accept = DFA13_accept;
            this.special = DFA13_special;
            this.transition = DFA13_transition;
        }
        public String getDescription() {
            return "1579:1: parse_OrchestrationLanguage_Process returns [OrchestrationLanguage.Process element = null] : ( (a0= TEXT ) a1= '(' ( (a2_0= parse_OrchestrationLanguage_Variable ) )* a3= ');' | c0= parse_OrchestrationLanguage_InternalProcess );";
        }
    }
 

    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Modules_in_start82 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_start89 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_parse_OrchestrationLanguage_Variable_005fAssignment115 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_Variable_005fAssignment129 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_14_in_parse_OrchestrationLanguage_Variable_005fAssignment152 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_parse_OrchestrationLanguage_Variable_005fAssignment172 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Variable_005fAssignment198 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Variable_005fAssignment244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_parse_OrchestrationLanguage_Variable_005fDeclaration273 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_Variable_005fDeclaration287 = new BitSet(new long[]{0x0000000000050000L});
    public static final BitSet FOLLOW_18_in_parse_OrchestrationLanguage_Variable_005fDeclaration310 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_parse_OrchestrationLanguage_Variable_005fDeclaration330 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Variable_005fDeclaration356 = new BitSet(new long[]{0x0000000000050000L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Variable_005fDeclaration402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_parse_OrchestrationLanguage_Variable431 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_Variable445 = new BitSet(new long[]{0x0000000000110000L});
    public static final BitSet FOLLOW_20_in_parse_OrchestrationLanguage_Variable468 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_parse_OrchestrationLanguage_Variable488 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_QUOTED_34_34_in_parse_OrchestrationLanguage_Variable514 = new BitSet(new long[]{0x0000000000110000L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Variable560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Module_in_parse_OrchestrationLanguage_Modules598 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_parse_OrchestrationLanguage_Module639 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Module657 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_Module678 = new BitSet(new long[]{0x0000000009410000L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Import_in_parse_OrchestrationLanguage_Module701 = new BitSet(new long[]{0x0000000009410000L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Service_in_parse_OrchestrationLanguage_Module736 = new BitSet(new long[]{0x0000000009010000L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Module762 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_parse_OrchestrationLanguage_Import791 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Import809 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_parse_OrchestrationLanguage_Import830 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_parse_OrchestrationLanguage_ExternalServices859 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_ExternalServices877 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_parse_OrchestrationLanguage_ExternalServices898 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_QUOTED_60_62_in_parse_OrchestrationLanguage_ExternalServices916 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_ExternalServices937 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Process_in_parse_OrchestrationLanguage_ExternalServices960 = new BitSet(new long[]{0x0000000000010010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_ExternalServices986 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Main_in_parse_OrchestrationLanguage_InternalServices1024 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_parse_OrchestrationLanguage_InternalServices1050 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalServices1068 = new BitSet(new long[]{0x0000000004002000L});
    public static final BitSet FOLLOW_26_in_parse_OrchestrationLanguage_InternalServices1098 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalServices1131 = new BitSet(new long[]{0x0000000000002010L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_InternalServices1190 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_InternalProcess_in_parse_OrchestrationLanguage_InternalServices1213 = new BitSet(new long[]{0x0000000000010010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_InternalServices1239 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_parse_OrchestrationLanguage_Main1268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Process1301 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_parse_OrchestrationLanguage_Process1322 = new BitSet(new long[]{0x0000000020080000L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Variable_in_parse_OrchestrationLanguage_Process1345 = new BitSet(new long[]{0x0000000020080000L});
    public static final BitSet FOLLOW_29_in_parse_OrchestrationLanguage_Process1371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_InternalProcess_in_parse_OrchestrationLanguage_Process1390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_InternalProcess1419 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_parse_OrchestrationLanguage_InternalProcess1440 = new BitSet(new long[]{0x0000000040080000L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Variable_in_parse_OrchestrationLanguage_InternalProcess1463 = new BitSet(new long[]{0x0000000040080000L});
    public static final BitSet FOLLOW_30_in_parse_OrchestrationLanguage_InternalProcess1489 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_InternalProcess1503 = new BitSet(new long[]{0x0000000600021010L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_InternalProcess1526 = new BitSet(new long[]{0x0000000600031010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_InternalProcess1552 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Call1585 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_parse_OrchestrationLanguage_Call1606 = new BitSet(new long[]{0x0000000020000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Call1629 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_parse_OrchestrationLanguage_Call1659 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Argument1703 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_parse_OrchestrationLanguage_Argument1736 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_Argument1762 = new BitSet(new long[]{0x0000000100010010L});
    public static final BitSet FOLLOW_32_in_parse_OrchestrationLanguage_Argument1808 = new BitSet(new long[]{0x0000000000010010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Argument1870 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_parse_OrchestrationLanguage_If1899 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_parse_OrchestrationLanguage_If1913 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_If1931 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_parse_OrchestrationLanguage_If1952 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_If1966 = new BitSet(new long[]{0x0000000600021010L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_If1989 = new BitSet(new long[]{0x0000000600031010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_If2015 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_TEXT_in_parse_OrchestrationLanguage_If2038 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_parse_OrchestrationLanguage_Else2083 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_parse_OrchestrationLanguage_Else2097 = new BitSet(new long[]{0x0000000600021010L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Command_in_parse_OrchestrationLanguage_Else2120 = new BitSet(new long[]{0x0000000600031010L});
    public static final BitSet FOLLOW_16_in_parse_OrchestrationLanguage_Else2146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_ExternalServices_in_parse_OrchestrationLanguage_Service2171 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_InternalServices_in_parse_OrchestrationLanguage_Service2181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Variable_005fAssignment_in_parse_OrchestrationLanguage_Command2202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Variable_005fDeclaration_in_parse_OrchestrationLanguage_Command2212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Call_in_parse_OrchestrationLanguage_Command2222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_If_in_parse_OrchestrationLanguage_Command2232 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_parse_OrchestrationLanguage_Else_in_parse_OrchestrationLanguage_Command2242 = new BitSet(new long[]{0x0000000000000002L});

}